WHOISの後継技術「RDAP」を試しにさわってみた #dnsops
6/28に開催された「DNS Summer Day 2017」、そこの1セッションでWHOISの次世代プロトコルが紹介されていました。
WHOISといえば、IPアドレスやドメインの情報を調べるためには必須の技術で、それはオンプレミスだろうがクラウドだろうが変わりません。どのように変化するのかは気になるところです。よい機会なので少し試しにさわってみました。
例として、いま使っているIPアドレス(グローバルIPアドレス)の情報を検索してみました。
都内某所から httpbin.org にアクセスすると、現在は「 61.210.10x.xxx
」というIPアドレスを使っていることが分かります。
$ curl -s httpbin.org/ip { "origin": "61.210.10x.xxx" }
まずはWHOISで
まずは従来からの、whoisコマンドで検索してみます。
WHOISコマンドはmacOSには最初からはいっていましたが、Linuxディストリビューションによっては追加インストールする必要があるかも知れません。
最初に、国内のレジストリであるJPNICのデータベースにアクセスしてみます。
$ whois -h whois.nic.ad.jp 61.210.10x.xxx
[ JPNIC database provides information regarding IP address and ASN. Its use ] [ is restricted to network administration purposes. For further information, ] [ use 'whois -h whois.nic.ad.jp help'. To only display English output, ] [ add '/e' at the end of command, e.g. 'whois -h whois.nic.ad.jp xxx/e'. ] Network Information: a. [Network Number] 61.210.0.0/16 b. [Network Name] INFOWEB g. [Organization] InfoWeb(Fujitsu Ltd.) :
使っているプロバイダ(InfoWeb)などの情報が出力されました。
同じIPアドレスを、今度は APNIC に問い合わせてみます。
$ whois -h whois.apnic.net 61.210.10x.xxx
: % Information related to '61.210.0.0 - 61.210.255.255' inetnum: 61.210.0.0 - 61.210.255.255 netname: INFOWEB descr: InfoWeb(Fujitsu Ltd.) country: JP : remarks: This information has been partially mirrored by APNIC from remarks: JPNIC. To obtain more specific information, please use the remarks: JPNIC WHOIS Gateway at remarks: http://www.nic.ad.jp/en/db/whois/en-gateway.html or remarks: whois.nic.ad.jp for WHOIS client. (The WHOIS client remarks: defaults to Japanese output, use the /e switch for English remarks: output) :
そこそこ大量に出力されますが、最後の方に同じような情報が記載されています。
ですが両者を比べてみると、例えばIPアドレスレンジのフォーマットが違いますし、
方やb. [Network Name]
、
方やnetname:
と、同じプロバイダ名が書いてある行であっても項目名がばらばらです。
人間が読む分には、適度にフォーマットされていて読みやすくはあるのですが、
もしこれをプログラムなどで再利用しようとしたとしたら、問い合わせるデータベースごとにパーサを変えるか、正規表現でがんばるか。。。あまり明るい未来が見えません。
さらに、もし RIPE のデータベースにアクセスした場合には、このように表示されて結果を得ることは出来ません。
$ whois -h whois.db.ripe.net 61.210.10x.xxx
inetnum: 61.0.0.0 - 61.255.255.255 netname: NON-RIPE-NCC-MANAGED-ADDRESS-BLOCK descr: IPv4 address block not managed by the RIPE NCC remarks: ------------------------------------------------------ remarks: remarks: You can find the whois server to query, or the remarks: IANA registry to query on this web page: remarks: http://www.iana.org/assignments/ipv4-address-space
RDAPの場合
次にRDAPで、同じ情報を検索してみます。
RDAPはRESTful APIなので、特別なクライアントがなくてもアクセスできます。
残念ながらまだJPNICはRDAPを提供していませんので、その上流であるAPNICにアクセスしてみます。
$ curl http://rdap.apnic.net/ip/61.210.10x.xxx
{ "handle" : "61.200.0.0 - 61.215.255.255", "startAddress" : "61.200.0.0", "endAddress" : "61.215.255.255", "ipVersion" : "v4", "name" : "JPNIC-NET-JP", "type" : "ALLOCATED PORTABLE", "country" : "JP", "objectClassName" : "ip network", "entities" : [ { :
きれいなJSONが返ってきました。ちゃんと、JPNICにアロケートされているところまでは出力されます。
では、同じクエリをRIPEにアクセスしたらどうなるでしょうか。
$ curl -v https://rdap.db.ripe.net/ip/61.210.10x.xxx * Trying 193.0.6.142... * Connected to rdap.db.ripe.net (193.0.6.142) port 443 (#0) : < HTTP/1.1 301 Moved Permanently < Date: Fri, 07 Jul 2017 01:22:25 GMT < Server: Jetty(9.3.z-SNAPSHOT) < Location: https://rdap.apnic.net/ip/61.210.10x.xxx :
ちゃんと、APNICのアドレスにリダイレクトされています。curl
に-L
オプションを付けて実行すれば、気にすること無くアクセスができるということですね。
$ curl -L https://rdap.db.ripe.net/ip/61.210.10x.xxx
{ "handle" : "61.200.0.0 - 61.215.255.255", "startAddress" : "61.200.0.0", "endAddress" : "61.215.255.255", :
いまはIPアドレスが中心ですが、そのうちドメイン名まで広がっていくと思います。遅かれ早かれJPNIC等の国別レジストリも対応するでしょうから、今後に注目でしょうか。